package main

import "fmt"

func main() {
	var arr [6]int = [6]int{1, 3, 4, 5, 6, 6}

	var slice []int = arr[0:6]

	//slice = append(slice, 20, 30)
	slice[1] = 8
	fmt.Println(slice)
	fmt.Println(arr)

	fmt.Printf("%p\n", &slice[0])
	fmt.Printf("%p\n", &arr[0])
}

// func main() {
// 	var slice []int
// 	fmt.Println(slice)
// }

// func main() {
// 	slice := []int{1, 2, 3, 4, 5, 6}

// 	for i := 0; i < len(slice); i++ {
// 		fmt.Printf("%d ", slice[i])
// 	}
// 	fmt.Println()

// 	for _, v := range slice {
// 		fmt.Printf("%d ", v)
// 	}
// 	fmt.Println()
// }

// 切片	[l,r)
// 对数组一个连续片段的引用
// func main() {
// 	var arr [6]int = [6]int{1, 3, 4, 5, 6, 6}

// 	var slice []int = arr[1:3]
// 	fmt.Println(slice)

// 	//2.通过make创建切片
// 	slice1 := make([]int, 4, 20)
// 	fmt.Println(len(slice1))
// 	fmt.Println(cap(slice1))
// 	fmt.Println(slice1)

// }

// import "fmt"

// //二维数组

// func main() {
// 	var arr [2][3]int
// 	fmt.Println(arr)

// 	arr1 := [...][4]int{{1, 2, 3}, {4, 5, 6}}
// 	fmt.Println(arr1)

// 	for i := 0; i < len(arr1); i++ {
// 		for j := 0; j < len(arr1[i]); j++ {
// 			fmt.Printf("%d ", arr1[i][j])
// 		}
// 	}
// }

//数组的长度属于其类型的一部分，长度不同的数组之间无法赋值
//数组为值拷贝

// func test(nums *[3]int) {
// 	(*nums)[0] = 1
// 	(*nums)[1] = 2
// 	(*nums)[2] = 3
// }

// func main() {
// 	nums := [...]int{0, 1, 2}
// 	test(&nums)

// 	fmt.Println(nums)
// }

// //数组的初始化
// func main() {
// 	//first
// 	var arr1 [3]int = [3]int{1, 2, 3}
// 	fmt.Println(arr1)

// 	//second
// 	var arr2 = [3]int{1, 4, 5}
// 	fmt.Println(arr2)

// 	//third
// 	var arr3 = [...]int{1, 3, 4, 5, 6, 8}
// 	fmt.Println(arr3)

// 	//forth
// 	var arr4 = [...]int{2: 6, 1: 2, 0: 5, 3: 9}
// 	fmt.Println(arr4)
// }

// func main() {
// 	var arr [6]int16
// 	fmt.Printf("%p\n", &arr)
// 	fmt.Printf("%p\n", &arr[0])
// }

// // 数组
// func main() {
// 	var nums [5]int
// 	for i := 0; i < len(nums); i++ {
// 		var t int
// 		fmt.Scanf("%d", &t)
// 		nums[i] = t
// 	}
// 	fmt.Println(nums)

// 	sum := 0
// 	for i := 0; i < len(nums); i++ {
// 		sum += nums[i]
// 	}

// 	for _, value := range nums {
// 		fmt.Printf("%d ", value)
// 	}
// 	fmt.Println(sum)
// }
